home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 February
/
EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso
/
enigma
/
earcd
/
giochi
/
giochi4
/
silver.lha
/
Doks
/
Gespraeche.txt
< prev
next >
Wrap
Text File
|
1996-11-17
|
9KB
|
321 lines
Gespraeche 02.11.1996
==========
Die Gespraeche der Spielercharaktere werden durch eine eigene
"Programmiersprache" gesteuert.
Das sogenannte "Gespraechsprogramm" ist in einer gewoehnlichen
Textdatei abgelegt, die den Namen "Gespraech_<nr>.txt" traegt,
wobei <nr> eine Zahl ist.
WICHTIG: Es duerfen maximal 250 Zeichen pro Textzeile verwendet werden.
Wenn ein "Gespraechsprogramm" ausgefuehrt wird, wird in der ersten
Zeile des "Programms" begonnen und Zeile fuer Zeile ausgefuehrt.
PRAEPROZESSOR
-------------
Die Datei "Gespraech_<nr>.txt" wird beim Einlesen schon bearbeitet,
um Speicher zu sparen
- Alle Kommentare werden entfernt
- Alle Tabulatoren werden durch EIN Leerzeichen ersetzt
- Fuehrende Leerzeichen werden entfernt
- Nachfolgende Leerzeichen werden entfernt
Entstehen dadurch Leerzeilen, so werden diese erst gar nicht eingelesen.
ACHTUNG: Die Anzahl der hiernach verbleibenden Textzeilen ist
programmintern begrenzt: Dies ist die Ausgabe "Max. Zeilenzahl
in Gespraechsdatei" im Hauptmenu (zur Zeit 250 Zeilen).
Danach wird die im Speicher befindliche Datei weiterbearbeitet:
- bei Sprunganweisungen (ausgenommen der INPUT-Befehl) werden
die Sprungmarken durch Zeilennummern ersetzt. Dadurch ist es
waehrend eines Gespraechs nicht mehr noetig, die Sprungmarke zu
suchen, sondern man das Programm kann die Zeilen direkt anspringen
- die Befehle werden durch Zahlencode ersetzt (=> spart Platz)
BEFEHLE
-------
In jede Zeile kann nur ein Befehl stehen, wobei allerdings fuehrende
Leerzeichen zulaessig sind.
AUSNAHME: In einer Zeile kann ein Befehl stehen, der von einem
Kommentar gefolgt werden kann - schliesslich ist ein
Kommentar kein Befehl.
WICHTIG: Befehle sind "case-sensitive", d.h. sie muessen genau so,
wie hier angegeben, geschrieben werden - die Gross- bzw.
Kleinschreibung muss genau eingehalten werden.
&<text> Kommentar
Alle dem Kaufmannsund folgenden Zeichen bis zum
Zeilenende werden ignoriert
END Gespraechsende
Dieser Befehl beendet das Gespraech an dieser Stelle
ACHTUNG: Es darf kein "Open End" geben - das Gespraech
muss immer durch ein END abgeschlossen sein
#<text> Textausgabe
Der dem Kreuz folgende Text wird auf dem Bildschirm
ausgegeben.
Nach der Textausgabe wird der gesamte Text um eine
Zeile hochgescrollt.
In <text> duerfen folgende Steueranweisungen vorkommen:
Die []-Anweisung:
<text1>[<text2>]<text3>
Hierdurch wird der <text2> farblich hervorgehoben
Bsp: Mein Name ist [Ragor], der Grossartige
Hierdurch wird das Wort "Ragor" hervorgehoben.
Die *-Anweisung
Der Stern '*' wird durch den Namen des Charakters
ersetzt, der gerade redet.
Z.B.: Der Charakter Ragor redet.
Dann wird die Zeile:
#Hallo *!
ausgegeben als:
Hallo Ragor!
ACHTUNG: Ein Name kann bis zu 20 Zeichen lang sein,
es muss daher darauf geachtet werden, dass
noch genug Platz in der Zeile ist, um den
Namen einfuegen zu koennen.
§<text> Sprungmarke
Der hinter dem Paragraphenzeichen stehende Text wird als
Name der Sprungmarke betrachtet.
Sprungmarken sind "case-insensitiv", d.h. es wird nicht
auf Gross- und Kleinschreibung geachtet.
Der Grund dafuer ist der Befehl INPUT - durch die
Nichtbeachtung der Rechtschreibung wird die Abfrage
wesentlich vereinfacht...
Bsp: §Verkauf
ACHTUNG: Sprungmarkennamen muessen eindeutig sein!!
GOTO <text> Sprungbefehl
Der hinter dem GOTO folgende Text wird als Name der
der anzuspringenden Sprungmarke angesehen
Bsp: GOTO Verkauf
INPUT <arg1> ... <arg n>
Benutzergelenkter Sprungbefehl
Erwartet eine Texteingabe. Diese Texteingabe wird mit den
angegebenen Argumenten verglichen (case-insensitiv).
Gibt es eine Uebereinstimmung zwischen einem Wort in dem
eingegebenen Text und den angegebenen Argumenten, so wird
zu der Sprungmarke mit diesem Namen gesprungen.
Wird keine Uebereinstimmung gefunden, so wird in der
folgenden Zeile fortgesetzt
Die Argumente werden durch Leerzeichen getrennt angegeben
Nach erfolgter Eingabe wird der Text um eine Zeile
hochgescrollt.
ACHTUNG: Eine leere Eingabe, d.h. druecken der RETURN-Taste
ohne Eingabe beendet das Gespraech!
Bsp: INPUT Name Beruf Alter
SET <nr>
Setzt die interne Merkvariable mit der Nummer <nr>
Das Programm wird in der naechsten Zeile fortgesetzt
Bsp: SET 2
UNSET <nr>
Loescht die interne Merkvariable mit der Nummer <nr>
Das Programm wird in der naechsten Zeile fortgesetzt
Bsp: UNSET 3
HINWEIS: Die Merkervariablen haben nur zwei Zustaende,
naemlich gesetzt oder ungesetzt.
IFSET <nr> <posmarke>
Falls die interne Merkvariable mit der Nummer <nr>
gesetzt ist wird zur Sprungmarke mit dem Namen <posmarke>
gesprungen. Ist sie nicht gesetzt, so wird in der
naechsten Programmzeile fortgefahren
INKEY
Gibt einen Hinweistext in der untersten Zeile aus und
wartet auf Tastendruck/Maustaste. Nach erfolgtem Druck
wird die Zeile geloescht. Es erfolgt kein Scrolling
YN <posmarke>
Wartet auf die Eingabe von "Ja" oder "Nein"
Bei Eingabe von "Ja" wird zur Marke "posmarke" gesprungen,
bei Eingabe von "Nein" wird in der folgenden Zeile
fortgesetzt
EP <anz>
<anz> Erfahrungspunkte werden an die Gruppe verteilt
Es wird der Text:
"Die Gruppe erhaelt <anz> Erfahrungspunkte"
ausgegeben.
IFUNSET <nr> <posmarke>
Falls die interne Merkvariable mit der Nummer <nr>
NICHT gesetzt ist wird zur Sprungmarke mit dem
Namen <posmarke> gesprungen Ist sie nicht gesetzt, so
wird in der naechsten Zeile fortgefahren
GETITEM <name>
Die Gruppe erhaelt den Gegenstand mit Namen <name>.
Dieser Gegenstandsname muss eindeutig sein (und,
natuerlich, existieren)
Bsp: GETITEM Schwert
Bemerkung: Da beim Erhalten eines Gegenstands der
Textausgabebereich geloescht wird, sollte vor
dem Aufruf von GETITEM der Befehl INKEY verwendet werden.
GIVEITEM <name> <marke>
Es soll ein Mitglied der Gruppe ausgewaehlt werden, welches
den Gegenstand mit Namen <name> hergibt. Dieser Name muss
NICHT eindeutig sein, d.h. das Mitglied kann mehrere
Gegenstaende dieses Namens bei sich tragen
Wird kein Gruppenmitglied ausgewaehlt oder hat das
gewaehlte Gruppenmitglied den Gegenstand nicht, dann
wird zu <marke> gesprungen.
Andernfalls wird in der naechsten Zeile fortgesetzt und
der Gegenstand wird abgegeben.
Bsp: GIVEITEM Schwert HatEsNicht
MONEY <anz>
<anz> Silberstuecke werden an die Gruppe verteilt.
Es wird der Text:
"Die Gruppe erhaelt <anz> Silberstuecke"
ausgegeben.
GIVEMONEY <anz> <marke>
Es soll ein Mitglied der Gruppe ausgewaehlt werden, welches
<anz> Geldstuecke hergibt.
Wird kein Gruppenmitglied ausgewaehlt oder hat es nicht
genug Geld, dann wird zu <marke> gesprungen.
Andernfalls wird in der naechsten Zeile fortgesetzt und
das Geld wird abgegeben.
Bsp: GIVEMONEY 20 HatKeinGeld
FOLLOW <nr> <fehlermarke>
Die Charakterdatei mit der Nummer <nr> wird geladen und der
darin enthaltene Charakter der Gruppe hinzugefuegt
Tritt hierbei ein Fehler auf (Datei nicht gefunden, kein
Platz in der Gruppe, ...) dann wird zur Marke
<fehlermarke> gesprungen
TEST <nr> <negmarke>
Fuehrt eine Menschenkenntnisprobe modifiziert mit <nr> durch
<nr> > 0 Erschwernis
<nr> < 0 Erleichterung
Misslingt die Probe, dann wird zur <negmarke> gesprungen
Andernfalls wird in der naechsten Zeile fortgesetzt
Z.B. kann man hiermit den Spielern Zusatzinfos zukommen
lassen - zur Illustration ein kurzes Beispiel:
#Allerbeste Ware! Nur 10000 Goldstuecke...
TEST 0 misslungen
#Du hast das Gefuehl, der Haendler luegt.
§misslungen
#Wollt ihr es kaufen?
ATTACK <nr> <anz> <siegmarke>
Die Gruppe wird von <anz> Gegnern mit der Nummer <nr>
angegriffen. Im Falle des Sieges wird zu <siegmarke>
gesprungen
Andernfalls wird in der naechsten Zeile fortgesetzt.
Kann der angegebene Gegner nicht geladen werden (d.h. tritt
ein Fehler auf), dann wird in der naechsten Zeile fortgesetzt
der Kampf wird also als verloren gewertet.
Bsp:
ATTACK 1 4 sieg
RACE <nr> <posmarke>
Falls der Sprecher zur Rasse <nr> gehoert
wird zur Sprungmarke mit dem Namen <posmarke> gesprungen
Ist dies nicht der Fall, so wird in der naechsten Zeile
fortgefahren
Zur Zeit gibt es folgende Rassen:
Rasse <nr>
SONSTIGE 0
MENSCH 1
TROLL 2
ELF 3
GOBLIN 4
KOBOLD 5
ZWERG 6
ORK 7
HALBELF 8
HALBORK 9
HOBBIT 10
Bsp:
RACE 1 IstMensch
Bemerkung: Hiermit kann man Abneigungen/Vorlieben von
Gespraechspartnern gegenueber bestimmten Rassen
einbauen
LEARN <nr>
Der Sprecher lernt die Rezeptur <nr>
0 = Heiltrank
siehe auch: Rezepte.txt
Bsp: LEARN 0
STYLE-GUIDE
===========
* In jedem Gespraech sollten folgende Begriffe akzeptiert werden:
ende - Um das Gespraech zu beenden
name - Um den Namen des Gespraechspartners zu erfahren
beruf - Um den Beruf des Gespraechspartners zu erfahren
alter - Um das Alter des Gespraechspartners zu erfahren
* Erscheinen im Text Schluesselwoerter, dann sollten sie mit
den Klammern [ ] hervorgehoben werden.